package main

import "fmt"

func main() {
	var (
		// 第Ｎ位
		N = 3
		// 值等于Ｘ
		X = 3
	)

	// 模拟map中的key
	numSli := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

	// 场景一：第Ｎ位等于X的值
	sum1 := AddN(numSli, N, X)
	fmt.Println("第Ｎ位等于X的值,求和：", sum1) // 3

	// 场景二：把前两位的和等于Ｘ的值进行相加
	sum2 := AddTwo(numSli, X)
	fmt.Println("前两位的和等于Ｘ的值,求和：", sum2) // 3

	// 场景三：第一位大于最后一位，第二位大于倒数第二位，依次类推
	sum3 := AddGt(numSli)
	fmt.Println("前面值大于后面值,求和：", sum3) // 0

	// 场景三：第一位大于最后一位，第二位大于倒数第二位，依次类推
	sum4 := AddLt(numSli)
	fmt.Println("前面值小于后面值,求和：", sum4) // 15
}

//--------------------------- 实现方法　－－－－－－－－－－－－－－－－－－－－//

// 1.把第Ｎ位等于X的值进行加减
func AddN(num []int, N, X int) (sum int) {
	for i, v := range num {
		// 1.把第Ｎ位等于x的值进行加减
		if i+1 == N && v == X {
			sum = v + sum
		}
	}
	return
}

// 2.把１,２位两个和等于Ｘ的值进行加减
func AddTwo(num []int, X int) (sum int) {
	// １,２位两个和等于Ｘ
	if num[0]+num[1] == X {
		sum = sum + num[0] + num[1]
	}
	return
}

// 3.第一位大于最后一位，第二位大于倒数第二位，依次类推
func AddGt(num []int) (sum int) {
	for i := 0; i < len(num)/2; i++ {
		if num[i] > num[len(num)-i-1] {
			sum = sum + num[i]
		}
	}
	return sum
}

// 4.第一位小于最后一位，第二位小于倒数第二位，依次类推
func AddLt(num []int) (sum int) {
	for i := 0; i < len(num)/2; i++ {
		if num[i] < num[len(num)-i-1] {
			sum = sum + num[i]
		}
	}
	return sum
}
